1. Field of the Invention
The present invention relates generally to software processing, and more particularly, to methods and systems for improving computer software testing using test coverage data.
2. Description of the Related Art
As the use of computer software in performing daily tasks is increasing rapidly, assessing software reliability through software testing has become an imperative stage in the software development cycle. As is well known, software testing is directed toward eliminating defects (i.e., bugs) in computer software, which if undetected, can create significant negative results.
Typically, software testing process involves testing of each specification document by one or multiple test suites. For simplifying the testing operation and ease of reference, test suites are divided into sections, such as tests, with each test being composed of several test cases. For the same reasons, the specification documents are also divided into, among others, chapters, sections, subsections, and assertions. As used herein, assertions are defined as boolean expressions designed to convey a necessary behavior of the software program and are typically included in the text. Assertions may be identified by implementation specific terminology such as “must,” “should,” “always,” “optional,” etc.
As the primary goal in testing software application testing is to ensure that the specifications are thoroughly tested, it is crucial to create test suites that when run accumulatively, test the entire specification. Thus far, however, the current state of software testing is incapable of providing a test developer information confirming that a given assertion in the specification document has been tested.
In accordance with the current testing process, the specification document is reviewed by the test group architecture in an attempt to locate all the assertions. Unfortunately, the reviewing process must be performed manually, making this task very tedious and time-consuming. To make the matter worse, merely locating each of the assertions in the specification does not provide the test developer with sufficient information to determine whether a particular assertion has been tested.
Consequently, each assertion must be mapped to the test case designed to test that particular assertion, in an attempt to configure that each and every assertion is tested. Unfortunately, this mapping operation is also very lengthy and tedious as it is performed manually by the test group architecture. Furthermore, despite being time consuming and a waste in resources, the mapping operation provides the test developer very limited information about the test coverage of a specification.
In view of the foregoing, there is a need for a flexible methodology and system for enhancing software testing process by improving test coverage determination of software specifications.